package 微服务.SpringCloud_1.统一网关Gateway_5.网关中的过滤器_3.过滤器执行顺序_3;

/**
 * 过滤器执行顺序
 */
public class index {
    /**
     * 请求进入网关会遇到三类过滤器：当前路由的过滤器、默认过滤器、全局过滤器（就是刚刚那三种）<p>
     * <a href="">请求路由后</a>，会将这三种过滤器合并到一个过滤器链（集合）中，排序后依次执行每个过滤器<p>
     * 当前路由过滤器和默认过滤器，都是一类过滤器，只不过作用范围不同，所以它们能放在一个集合里<p>
     * 而对于全局过滤器，网关中有一个<a href="">过滤器适配器</a><p>
     * 这个适配器实现了GatewayFilter，内部又接收了一个GlobalFilter，就相当于把GlobalFilter适配成了GatewayFilter<p>
     * 从这个角度来说，网关中所有过滤器最终都会成为GatewayFilter<p>
     * 所以它们也可以放在一个集合里<p></p>
     * <p>
     * 排序方式：<p>
     * 每一个过滤器都要指定一个int类型的order值，这个值越小优先级越高<p>
     * GlobalFilter通过实现Ordered接口或者通过注解@Order来指定order值（自己指定的）<p>
     * 而路由过滤器和默认过滤器的order值是由Spring来指定的，默认是按照声明顺序从1递增<p>
     * 但它们两个是分开计数的，这就有一个问题：如果order值相等，如何排序？<p>
     * 当过滤器的order值一样时，会按照 <a href="">默认过滤器 > 路由过滤器 > 全局过滤器</a> 的顺序排序<p>
     *
     * @param args
     */
    public static void main(String[] args) {

    }
}
